Over the past decade, there has been explosive growth in mobile communications, in both the number and types of available smartphones and applications, or apps, that are installed on such devices. Moreover, these smartphones operate over competing platforms, which are often not compatible. Accordingly, app developers must typically develop different versions of their apps, one for each competing platform. For example, many developers may create an app that is compatible with iOS, the operating system provided by Apple Inc. of Cupertino, Calif., and a separate version of that app designed for Android, the operating system developed by Google Inc. of Mountain View, Calif. Moreover, these operating systems are periodically updated, and app developers must account for the current version of the operating system and some of the older ones. Even more vexing, there are a significant number of communication devices offered by various manufacturers that support these operating systems.
In view of the current development environment, app developers must account for many variables when developing their apps. In addition, once the app is developed, it may be tested on several physical devices. In fact, the app developer may require access to both iOS and Android devices, including those that operate on older versions of the operating systems. This procedure is both inefficient and expensive in view of the numerous operating systems, their versions and the different devices on which they are installed. In an effort to overcome the deficiencies associated with testing many different physical devices, some developers have used emulators that virtualize both the hardware and software of a mobile device. Unfortunately, emulators are significantly slower than the physical devices in view of the interpretations or translations that are involved during their operation. Additionally, simulators, which may replicate the software of a mobile unit but not its hardware, do not provide a realistic alternative to the physical device and are inadequate for development and testing.